package com.example.lambda.optional;

import com.example.lambda.test.Employer;
import org.junit.Test;

import java.util.Optional;

public class TestOptional {

    /**
     * Optional 常用方法
     * Optional.of(T t) 创建一个Optional实例
     * Optional.empty() 创建一个空的Optional实例
     * Optional，ofNullable(T t) 若t不为null，创建Optional实例，否则创建空实例
     * isPresent 判断是否包含值
     * orElse（T t） 如果调用对象包含值，返回该值 ，否则返回t
     * orElseGet（Supplier s） 如果调用对象包含值，，返回该值，否则返回s获取值
     *
     */

    @Test
    public void test(){
        Optional<Employer> op = Optional.of(new Employer());
        System.out.println(op.get());
    }

    @Test
    public void test2(){
        Optional<Employer> op2 = Optional.empty();

    }


    @Test // 获取女神名字
    public void test3(){

        Optional<NewMan> op = Optional.of(new NewMan());
        String name = getGodnessNanme2(op);
        System.out.println(name);
    }


    public String getGodnessNanme(Man man){
        return man.getGodness().getName();
    }


    public String getGodnessNanme2(Optional<NewMan> newMan){
        return newMan.orElse(new NewMan()).getGodness().orElse(new Godness("苍老师")).getName();
    }
}
